home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- ### BEGIN INIT INFO
- # Provides: wpa-ifupdown
- # Required-Start: $network
- # Required-Stop: $network $remote_fs
- # Should-Start:
- # Should-Stop:
- # Default-Start:
- # Default-Stop: 0 6
- # Short-Description: Stop wpa_supplicant processes started via ifupdown
- # Description: Run ifdown on interfaces authenticated via
- # wpa_supplicant. Sendsigs terminates wpa_supplicant
- # processes before networking is stopped causing each
- # network interface authenticated via a wpa_supplicant
- # daemon to be terminated abrubtly.
- # Since initscripts package version 2.86.ds1-48 an
- # interface exists to omit process id's from sendsigs. If
- # this interface is present this script is a no-op.
- ### END INIT INFO
-
- PATH=/usr/sbin:/usr/bin:/sbin:/bin
-
- test -d /var/run || exit 0
-
- test -x /sbin/ifdown || exit 0
-
- . /lib/lsb/init-functions
-
- stop_wpa_action () {
- test -x /sbin/wpa_action || return 0
- IFACES=$(find /var/run -maxdepth 1 -type f -name 'wpa_action.*.pid' -printf '%P\n' | \
- cut -d'.' -f2 2>/dev/null)
- if test -n "$IFACES"; then
- log_daemon_msg "Stopping wpa_action roaming interfaces"
- for iface in $IFACES; do
- log_progress_msg "$iface"
- # wpa_action executes /sbin/ifdown
- wpa_action "$iface" stop >/dev/null 2>&1
- done
- log_end_msg 0
- fi
- }
-
- stop_wpa_supplicant () {
- IFACES=$(find /var/run -maxdepth 1 -type f -name 'wpa_supplicant.*.pid' -printf '%P\n' | \
- grep -v wpa_supplicant.dbus.pid | cut -d'.' -f2 2>/dev/null)
- if test -n "$IFACES"; then
- log_daemon_msg "Stopping wpa_supplicant interfaces"
- for iface in $IFACES; do
- log_progress_msg "$iface"
- ifdown "$iface" >/dev/null 2>&1
- done
- log_end_msg 0
- fi
- }
-
- sendsigs_omission_support () {
- if [ -d /lib/init/rw/sendsigs.omit.d/ ]; then
- # Debian
- return 0
- elif [ -d /var/run/sendsigs.omit.d/ ]; then
- # Ubuntu, cf. https://bugs.launchpad.net/bugs/181541
- return 0
- fi
-
- return 1
- }
-
- case "$1" in
- start|restart|force-reload)
- # No-op
- ;;
- stop)
- if sendsigs_omission_support; then
- stop_wpa_action
- else
- stop_wpa_action
- stop_wpa_supplicant
- fi
- ;;
- *)
- echo "Usage: $0 {start|stop|restart|force-reload}" >&2
- exit 3
- ;;
- esac
-
- exit 0
-